package com.ymatou.iapi.sellerproduct.testcase;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;

import com.ymatou.iapi.sellerproduct.parameter.ProdTplBean;
import com.ymatou.iapi.sellerproduct.service.AddNewSellerProductCall;
import com.ymatou.iapi.sellerproduct.service.AddProductInLivesCall;
import com.ymatou.iapi.sellerproduct.service.SaveProductTemplateCall;
import com.ymt.core.tool.Logger;
import com.ymt.utils.annotation.TestCase;
import com.ymt.utils.annotation.TestSuite;
import com.ymt.utils.tag.P1;
import com.ymttest.business.service.LiveCallService;
import com.ymttest.business.service.NewJavaMongoCheckService;
import com.ymttest.business.service.SellerProductCallService;
import com.ymttest.database.mongo.YmtMongoDriverFactroy;
import com.ymttest.database.sqlwapper.YmtProductsInLiveWapper;
import com.ymttest.utils.EnvSetup;
import com.ymttest.utils.JsonBeanHelper;
import com.ymttest.utils.MapUtil;
import com.ymttest.utils.YMTDateUtil;
/**
*添加长期售卖商品
*FreeMaker Template自动生成代码
*/
@TestSuite
public class Ts_AddNewSellerProduct{
	private static AddNewSellerProductCall addnewsellerproductCall;
	private static Integer sellerId = Integer.parseInt(EnvSetup.getData("productsellerid"));
	private static String sellerName = EnvSetup.getData("productsellername");	
	private static Integer sellerId2 = Integer.valueOf(EnvSetup.getData("productsellerid3"));
	private static String sellerName2 = EnvSetup.getData("productsellername3");
	
	@BeforeClass
	public static void setUp() {
		Logger.createResultFile("添加长期售卖商品");
	}

	@Before
	public void caseUp() {
		addnewsellerproductCall=new AddNewSellerProductCall();		
	}
	
	
	@AfterClass
	public static void tearDown() {
		Logger.generateResult(addnewsellerproductCall.getOpurl());
	}
		
	/**
	 * 返回信息公用错误信息部分断言（正向Case场景）
	 * @param dataStr 传入报文信息
	 * @throws Exception 错误信息
	 * @return 商品ID
	 */
	public static String addNewSellerProductGetreturncode(JSONObject dataStr) throws Exception {
	    try {	    	
			//返回报文断言		
			String code =  dataStr.getString("Code");
			Logger.verifyIsContains(200, code, "\"Code\":200");
			String bCode =  dataStr.getString("BCode");
			Logger.verifyIsContains(0, bCode, "\"BCode\":200");
			String msg =  dataStr.getString("Msg");
			Logger.verifyIsNull(msg, "Msg等于空");		
			String trace =  dataStr.getString("Trace");
			Logger.verifyIsNull(trace, "Trace等于空");
			String sProductID =  dataStr.getJSONObject("Data").getString("ProductID");
			Logger.verifyNotNull(sProductID, "商品id不能为空");
			
	    	return  sProductID; 	    	
	    }catch (Exception e) {  
	        e.printStackTrace();
	    }  
	    return "";
	}	
	
	@After
	public void caseDown() {
		Logger.end();
	}
	
		
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_001() {
		Logger.start(true,"添加长期售卖商品（多规格）");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc1.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);


			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			addnewsellerproductCall.checkCatalogsname(addProductBean, productID);
			
			
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_002() {
		Logger.start(true,"添加长期售卖商品（单规格）");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);

			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_003() {
		Logger.start(true,"添加长期售卖商品（2种分类4个规格）");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc3.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);

			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			addnewsellerproductCall.checkCatalogsname(addProductBean, productID);
			
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_004() {
		Logger.start(true,"添加长期售卖商品（带规格图标）");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc4.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			YMTDateUtil.waitTime(1);
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			addnewsellerproductCall.checkCatalogsname(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_005() {
		Logger.start(true,"发布卖家保税商品");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc5.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);						
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_006() {
		Logger.start(true,"发布第三方直邮商品");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc6.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);						
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_007() {
		Logger.start(true,"日本买手发布商品");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc1.json");
			Map<String, Object> updateMap = addProduct001(sellerId2,sellerName2);						
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId2);
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_008() {
		Logger.start(true,"发布拼邮商品");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc7.json");
			Map<String, Object> updateMap = addProduct001(sellerId,sellerName);						
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			AddNewSellerProductCall.checkNewProduct(addProductBean, productID);	
			AddNewSellerProductCall.checkCatalogsprice(addProductBean, productID);
			AddNewSellerProductCall.checkCatalogsname(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				AddNewSellerProductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			if (YmtMongoDriverFactroy.isNewJavaMgoCheck()){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_009() {
		Logger.start(true,"发布自定义品牌商品");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc8.json");
			Map<String, Object> updateMap = addProduct002(sellerId,sellerName);						
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			addnewsellerproductCall.checkCatalogsname(addProductBean, productID);
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	
	
	/**
	 * ————————————————以下为首次露出时间相关测试 ————————————————
	 * @return updateMap
	 * @throws Exception
	 */
	
	/**
	 * 发布立即上架商品，首次露出时间应该为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_010() {
		Logger.start(true,"发布立即上架商品，首次露出时间应该为商品发布的时间");
		try {
			//TODO 补全case代码			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 0);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
		
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
			} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 * 发布立即上架商品，加入一个未开始的直播，首次露出时间应该为商品发布时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_011() {
		Logger.start(true,"发布立即上架商品，加入一个未开始的直播，首次露出时间应该为商品发布时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList.add(LiveCallService.createLiveBegin6dayInFuture(sellerName, sellerId).getJSONObject("Data").getInt("ActivityId"));
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 0);
			updateMap.put("Product->LiveIdList",new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	/**
	 * 发布立即上架商品，加入一个正在进行中的直播，首次露出时间应该为商品发布时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_012() {
		Logger.start(true,"发布立即上架商品，加入一个正在进行中的直播，首次露出时间应该为商品发布时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList.add(LiveCallService.createLiveInProgress(sellerName, sellerId).getJSONObject("Data").getInt("ActivityId"));
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 0);
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	

	/**
	 * 发布立即上架商品，加入进行中的和未开始的多个直播，首次露出时间应该为商品发布时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_013() {
		Logger.start(true,"发布立即上架商品，加入进行中的和未开始的多个直播，首次露出时间应该为商品发布时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 0);
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	/**
	 * 发布定时上架商品，不加入直播，露出时间应该为定时上架的开始时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_014() {
		Logger.start(true,"发布定时上架商品，不加入直播，露出时间应该为定时上架的开始时间");
		try {
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(10,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(17,YMTDateUtil.YMDTHMS_STRING));
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,2);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	/**
	 * 发布定时上架商品，加入未开始直播，未开始直播时间早于定时上架时间，露出时间应为所加入未开始直播中开始时间最小值
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_015() {
		Logger.start(true,"发布定时上架商品，加入未开始直播，未开始直播时间早于定时上架时间，露出时间应为所加入未开始直播中开始时间最小值");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			//当前时间2天后开始的直播和4天后开始的直播
			LiveIdList=LiveCallService.createLivesInFuture(sellerId,sellerName,2, 2);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(10,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(17,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,3);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	/**
	 * 发布定时上架商品，加入未开始直播，定时上架时间早于所有未开始直播时间，露出时间应为定时上架时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_016() {
		Logger.start(true,"发布定时上架商品，加入未开始直播，定时上架时间早于所有未开始直播时间，露出时间应为定时上架时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInFuture(sellerId, sellerName, 2, 5);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,2);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_017() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_018() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//TODO
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_019() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}

	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_020() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", LiveIdList);
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,2);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_021() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_022() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	

	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_023() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_024() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_025() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_026() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_027() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	/**
	 *  发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间
	 * @return updateMap
	 * @throws Exception
	 */
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_028() {
		Logger.start(true,"发布定时上架商品，加入进行中和未开始的多个直播，露出时间为商品发布的时间");
		try {
			//创建即将开始的直播
			List <Integer> LiveIdList=new ArrayList<>();
			LiveIdList=LiveCallService.createLivesInProcessAndInFuture(sellerId, sellerName, 2, 3);
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			Map<String, Object> updateMap=new HashMap<String,Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->OnSaleType", 1);
			updateMap.put("Product->ValidStart", YMTDateUtil.getBeforeOrNextDay(2,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->ValidEnd", YMTDateUtil.getBeforeOrNextDay(9,YMTDateUtil.YMDTHMS_STRING));
			updateMap.put("Product->LiveIdList", new JSONArray(LiveIdList));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			
			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL 断言
			SellerProductCallService.checkSqlListingTime(productID,1);
			
			//新Mongo断言
			SellerProductCallService.checkListingTime(productID,null);

			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_029() {
		Logger.start(true,"PC发布直播商品");
		try {
			//TODO 补全case代码			
			//发布直播
			JSONObject liveBean = LiveCallService.createLiveBeginInFuture(sellerName,sellerId);
			int liveId =  liveBean.getJSONObject("Data").getInt("ActivityId");			
			
			List<String> livelist=new ArrayList<>();
			livelist.add(Integer.toString(liveId));
			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc2.json");
			
			Map<String, Object> updateMap=addProduct001(sellerId,sellerName);
			updateMap.put("Product->LiveIdList",  new JSONArray(livelist));
		
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);
			
			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);

			//返回报文断言并取出ProductId
			String productID = addNewSellerProductGetreturncode(result);
			
			//SQL Mango断言
			addnewsellerproductCall.checkNewProduct(addProductBean, productID);	
			addnewsellerproductCall.checkCatalogsprice(addProductBean, productID);
			
			//check SQL YmtProductsInLiveWapper
			YmtProductsInLiveWapper ymtProductsInLiveWapper = new YmtProductsInLiveWapper();
			Logger.verifyEquals(1, ymtProductsInLiveWapper.selectByLiveId(liveId).size(),"YmtProductsInLiveWapper 加入直播，记录有效");
			Logger.verifyEquals(0, ymtProductsInLiveWapper.selectByLiveId(liveId).get(0).getiAction(),"YmtProductsInLiveWapper iaction记录有效为0");
			
			if (YmtMongoDriverFactroy.isNewMongoCheck()){	
			//新Mongo断言
				//商品表
				addnewsellerproductCall.checkNewMongoProductModel(result, productID, sellerId);
				//直播&直播商品表
				AddProductInLivesCall addProductInLivesCall=new AddProductInLivesCall();
				addProductInLivesCall.checkLiveProductModel(liveBean,result,liveId,productID);
				addProductInLivesCall.checkLiveModel(liveBean,result,liveId);
				
			}
			
			if (YmtMongoDriverFactroy.IsNewJavaMongoOpen){
				NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productID);
			}
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}	
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_030() {
		Logger.start(true,"PC发布直播商品 多规格");
		try {
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc10.json");	
			JsonBeanHelper.updateJsonBean(addProductBean, MapUtil.hashMap("UserID", 3383,"LoginID", sellerName));

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			String productId = addNewSellerProductGetreturncode(result);
			NewJavaMongoCheckService.checkProductMgoSyncBySQL_NewJavaMgo(productId);
			
		}catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	

	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_031() {
		Logger.start(true,"PC发布直播商品  模板  三级品类 有meansurePic ");
		try {
			SaveProductTemplateCall saveProductTemplateCall = new SaveProductTemplateCall();
			
			saveProductTemplateCall.deleteTemplate(sellerId);
			//	模版类型（1，尺码模版 2，买家须知 3，买手服务）
			ProdTplBean sizeTemplate = saveProductTemplateCall.saveTemplate(sellerId, 1);
			ProdTplBean buyerNoticeTemplate = saveProductTemplateCall.saveTemplate(sellerId, 2);
			ProdTplBean sellerServiceTemplate = saveProductTemplateCall.saveTemplate(sellerId, 3);
			
			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc12.json");	
			Map<String, Object> updateMap = MapUtil.hashMap();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->SizeTemplateId", sizeTemplate.getTemplateId());
			updateMap.put("Product->BuyerNoticeId", buyerNoticeTemplate.getTemplateId());
			updateMap.put("Product->SellerServiceId", sellerServiceTemplate.getTemplateId());
			updateMap.put("Product->iThirdCategoryId", 1123);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			String productId = addNewSellerProductGetreturncode(result);
			
			//check product template
			SellerProductCallService.checkTemplateWithProd(productId, Arrays.asList(sizeTemplate,buyerNoticeTemplate,sellerServiceTemplate));
			
			SellerProductCallService.checkProdProperty(productId,new JSONArray());
			
		}catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_032() {
		Logger.start(true,"PC发布直播商品  模板  三级品类 没 有meansurePic");
		try {
			SaveProductTemplateCall saveProductTemplateCall = new SaveProductTemplateCall();
			
			saveProductTemplateCall.deleteTemplate(sellerId);
			//	模版类型（1，尺码模版 2，买家须知 3，买手服务）
			ProdTplBean sizeTemplate = saveProductTemplateCall.saveTemplate(sellerId, 1);
			ProdTplBean buyerNoticeTemplate = saveProductTemplateCall.saveTemplate(sellerId, 2);
			ProdTplBean sellerServiceTemplate = saveProductTemplateCall.saveTemplate(sellerId, 3);
			
			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc12.json");	
			Map<String, Object> updateMap = MapUtil.hashMap();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->SizeTemplateId", sizeTemplate.getTemplateId());
			updateMap.put("Product->BuyerNoticeId", buyerNoticeTemplate.getTemplateId());
			updateMap.put("Product->SellerServiceId", sellerServiceTemplate.getTemplateId());
			updateMap.put("Product->iThirdCategoryId", 1123);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			String productId = addNewSellerProductGetreturncode(result);
			
			//check product template
			SellerProductCallService.checkTemplateWithProd(productId, Arrays.asList(sizeTemplate,buyerNoticeTemplate,sellerServiceTemplate));
			
		}catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_033() {
		Logger.start(true,"PC发布直播商品  模板  三级品类  有meansurePic 没有sizepic");
		try {
			SaveProductTemplateCall saveProductTemplateCall = new SaveProductTemplateCall();
			
			saveProductTemplateCall.deleteTemplate(sellerId);
			//	模版类型（1，尺码模版 2，买家须知 3，买手服务）
			//ProdTplBean sizeTemplate = saveProductTemplateCall.saveTemplate(sellerId, 1);
			ProdTplBean buyerNoticeTemplate = saveProductTemplateCall.saveTemplate(sellerId, 2);
			ProdTplBean sellerServiceTemplate = saveProductTemplateCall.saveTemplate(sellerId, 3);
			
			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc12.json");	
			Map<String, Object> updateMap = MapUtil.hashMap();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			//updateMap.put("Product->SizeTemplateId", sizeTemplate.getTemplateId());
			updateMap.put("Product->BuyerNoticeId", buyerNoticeTemplate.getTemplateId());
			updateMap.put("Product->SellerServiceId", sellerServiceTemplate.getTemplateId());
			updateMap.put("Product->iThirdCategoryId", 1123);
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			String productId = addNewSellerProductGetreturncode(result);
			
			//check product template
			SellerProductCallService.checkTemplateWithProd(productId, Arrays.asList(buyerNoticeTemplate,sellerServiceTemplate));
			
		}catch (Exception e) {
			Logger.fail(e);
		}
	}
	
	
	
	
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddNewSellerProduct_035() {
		Logger.start(true,"PC发布直播商品 属性 ");
		try {
			Map<String, Object> thirdCategoryAndPropertyVal = SellerProductCallService.getThirdCategoryAndPropertyValue();
			
			//发布商品
			JSONObject addProductBean = JsonBeanHelper.getJsonBean("com.ymatou.iapi.sellerproduct/AddNewSellerProduct/AddNewProductTpl_Tc12.json");	
			Map<String, Object> updateMap = MapUtil.hashMap();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->iThirdCategoryId", thirdCategoryAndPropertyVal.get("ThirdCategory"));
			updateMap.put("Product->PropertyList", (JSONArray)thirdCategoryAndPropertyVal.get("PropertyList"));
			
			JsonBeanHelper.updateJsonBean(addProductBean, updateMap);

			//call&获取返回报文
			JSONObject result = SellerProductCallService.addNewProduct(addProductBean);
			String productId = addNewSellerProductGetreturncode(result);
			
			
			SellerProductCallService.checkProdProperty(productId,(JSONArray)thirdCategoryAndPropertyVal.get("PropertyList"));
			
		}catch(Exception e){
			Logger.fail(e);
		}
	}
	
	
	
	
	
	
	
	
	/**
	 * 新增商品case001
	 * @return updateMap
	 * @throws Exception
	 */
	public static Map<String, Object> addProduct001(int sellerId , String sellerName) throws Exception {
		try {		
			String productname ="自动化测试商品X"+ YMTDateUtil.getSysTime();
			String mobileDescription ="商品介绍X"+ YMTDateUtil.getSysTime();
			String picturl="http://pm1.img.ymatou.com/G01/upload/product/original/M00/15/F0/rBBlD1dwky2AOhI6AAAphnmT5Z0419_n_w_o.jpg";
			String wordContent ="文字描述X"+ YMTDateUtil.getSysTime();
			String description ="老商品详情描述X"+ YMTDateUtil.getSysTime();
			BigDecimal price = new BigDecimal((int)(Math.random()*1000)+3); 
			BigDecimal vipprice = price.subtract(new BigDecimal("1"));
			BigDecimal newcustomerprice = price.subtract(new BigDecimal("2"));
			int num = (int)(Math.random()*10000);
			String sSKU="SKU"+num;
			String sProductCode="ProductCode"+num;
			boolean limited = true;
			int limitnum= (int)(Math.random()*10);
			String limitNumStartTime = YMTDateUtil.getSysTime();	//限购开始时间
			boolean noticeRisk = false;	//砍单风险
			int logisticsChannel = 1;	//物流方式 1贝海 2第三方
			int tariffType = 1; //1不包税 0包税
			int onSaleType = 0; //立即上架 
			int localReturn = 1; //1官方退货 2买手本土退货
			boolean noReasonReturn = false; //无理由退货
			int iCategoryId = 1191; 	//商品类目
			int iThirdCategoryId = 1194; 	//三级类目
			int iBrandId = 10098; 	//品牌ID
			String brandName = "Chanel";
			
			Map<String, Object> updateMap = new HashMap<String, Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->ProductName", productname);
			updateMap.put("Product->MobileDescription", mobileDescription);
			updateMap.put("Product->PictureUrl1", picturl);
			updateMap.put("Product->PictureUrl2", picturl);
			updateMap.put("Product->ProductDescriptionInfo->WordContent", wordContent);
			updateMap.put("Product->Catalogs[0]->Price", price);
			updateMap.put("Product->Catalogs[0]->VipPrice", vipprice);
			updateMap.put("Product->Catalogs[0]->NewCustomerPrice", newcustomerprice);
			updateMap.put("Product->Catalogs[0]->Num", num);
			updateMap.put("Product->Catalogs[0]->SKU", sSKU);
			updateMap.put("Product->Catalogs[0]->ProductCode", sProductCode);
			updateMap.put("Product->ProductCode", sProductCode); 	
			updateMap.put("Product->Limited", limited);
			updateMap.put("Product->LimitNum", limitnum);
			updateMap.put("Product->LimitNumStartTime", limitNumStartTime);
			updateMap.put("Product->NoticeRisk", noticeRisk);
			updateMap.put("Product->LogisticsChannel", logisticsChannel);
			updateMap.put("Product->TariffType", tariffType);
			updateMap.put("Product->OnSaleType", onSaleType);
			updateMap.put("Product->LocalReturn", localReturn);
			updateMap.put("Product->NoReasonReturn", noReasonReturn);
			updateMap.put("Product->iCategoryId", iCategoryId);
			updateMap.put("Product->iThirdCategoryId", iThirdCategoryId);
			updateMap.put("Product->iBrandId", iBrandId);
			updateMap.put("Product->Description",description);
			updateMap.put("Product->CatalogStatus",4);
			updateMap.put("Product->sBrandName",brandName);
			
			return updateMap;
		} catch (Exception e) {   
			e.printStackTrace();
		}
		return null;	
	}		
	
	
	
	/**
	 * 新增商品case002 自定义品牌（TC009）
	 * @return updateMap
	 * @throws Exception
	 */
	public static Map<String, Object> addProduct002(int sellerId , String sellerName) throws Exception {
		try {		
			String productname ="自动化测试商品X"+ YMTDateUtil.getSysTime();
			String mobileDescription ="商品介绍X"+ YMTDateUtil.getSysTime();
			String picturl="http://pm1.img.ymatou.com/G01/upload/product/original/M00/15/F0/rBBlD1dwky2AOhI6AAAphnmT5Z0419_n_w_o.jpg";
			String wordContent ="文字描述X"+ YMTDateUtil.getSysTime();
			String description ="老商品详情描述X"+ YMTDateUtil.getSysTime();
			BigDecimal price = new BigDecimal((int)(Math.random()*1000)+3); 
			BigDecimal vipprice = price.subtract(new BigDecimal("1"));
			BigDecimal newcustomerprice = price.subtract(new BigDecimal("2"));
			int num = (int)(Math.random()*10000);
			String sSKU="SKU"+num;
			String sProductCode="ProductCode"+num;
			boolean limited = true;
			int limitnum= (int)(Math.random()*10);
			String limitNumStartTime = YMTDateUtil.getSysTime();	//限购开始时间
			boolean noticeRisk = false;	//砍单风险
			int logisticsChannel = 1;	//物流方式 1贝海 2第三方
			int tariffType = 1; //1不包税 0包税
			int onSaleType = 0; //立即上架 
			int localReturn = 1; //1官方退货 2买手本土退货
			boolean noReasonReturn = false; //无理由退货
			int iCategoryId = 1191; 	//商品类目
			int iThirdCategoryId = 1194; 	//三级类目
			int iBrandId = 0; 	//品牌ID
			String sBrandName ="自定义品牌X"+ YMTDateUtil.getSysTime();
			
			Map<String, Object> updateMap = new HashMap<String, Object>();
			updateMap.put("UserID", sellerId);
			updateMap.put("LoginID", sellerName);
			updateMap.put("Product->ProductName", productname);
			updateMap.put("Product->MobileDescription", mobileDescription);
			updateMap.put("Product->PictureUrl1", picturl);
			updateMap.put("Product->PictureUrl2", picturl);
			updateMap.put("Product->ProductDescriptionInfo->WordContent", wordContent);
			updateMap.put("Product->Catalogs[0]->Price", price);
			updateMap.put("Product->Catalogs[0]->VipPrice", vipprice);
			updateMap.put("Product->Catalogs[0]->NewCustomerPrice", newcustomerprice);
			updateMap.put("Product->Catalogs[0]->Num", num);
			updateMap.put("Product->Catalogs[0]->SKU", sSKU);
			updateMap.put("Product->Catalogs[0]->ProductCode", sProductCode);
			updateMap.put("Product->ProductCode", sProductCode); 	
			updateMap.put("Product->Limited", limited);
			updateMap.put("Product->LimitNum", limitnum);
			updateMap.put("Product->LimitNumStartTime", limitNumStartTime);
			updateMap.put("Product->NoticeRisk", noticeRisk);
			updateMap.put("Product->LogisticsChannel", logisticsChannel);
			updateMap.put("Product->TariffType", tariffType);
			updateMap.put("Product->OnSaleType", onSaleType);
			updateMap.put("Product->LocalReturn", localReturn);
			updateMap.put("Product->NoReasonReturn", noReasonReturn);
			updateMap.put("Product->iCategoryId", iCategoryId);
			updateMap.put("Product->iThirdCategoryId", iThirdCategoryId);
			updateMap.put("Product->iBrandId", iBrandId);
			updateMap.put("Product->sBrandName", sBrandName);
			updateMap.put("Product->Description",description);
			updateMap.put("Product->CatalogStatus",4);
			
			return updateMap;
		} catch (Exception e) {   
			e.printStackTrace();
		}
		return null;	
	}		
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	


	
	
}